// 老师讲完练习


// 接口定义函数
interface Say{
    (msg:string):void  //说明函数没有返回值，如果将void改为string，说明函数的返回值为字符串
}

let say:Say = function(msg:string){
    console.log(msg);
    // return  '123'
}

// 接口约束类
interface Person{
    name:string;
    age:number;
    say:Say;//用上面的say方法
    eat:(msg:string)=>void  //eat方法没有返回值
}
// implements 为接口约束类的关键字
class Stu implements Person{
    name: string;
    age:number;
    constructor(name:string,age:number){
        this.name=name;
        this.age=age;
    }
    say(){
        console.log('say方法');
    }
    eat(msg:string){
        console.log(msg);
        
    }
}
// 调用 
let p= new Stu('lxf',23)
p.say();
console.log(p.age);


// 接口继承
interface Width{
    width:string
}

interface Heigh{
    heigh:string
}

interface Color extends Width,Heigh{
    color:string
}

let box : Color ={  //接口继承，属性需要包括继承过来的属性
    color:'red',
    width:'100px',
    heigh:'100px'
}
